MTK点亮TP(touchpanel)

您所在的位置:网站首页 how to reset a tp MTK点亮TP(touchpanel)

MTK点亮TP(touchpanel)

2023-07-09 22:57| 来源: 网络整理| 查看: 265

与之前不同的是,tp涉及到i2c或在spi了,大部分还是通过i2c地址来判别的,本例子也通过i2c来举例

1.配置对应的dtsi

$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/$(MTK_PLATFORM).dts

(分别对应内核版本,32还是64位,mtk平台)

在主dts中配置touch的设备节点,会与驱动里面对应

touch: touch {         compatible = "mediatek,touch"; };

在项目所在的dst里面配置设备相关信息,不过因为tp的设备类型可能有变化,所以一般单独定义

$(LINUX_KERNEL_VERSION)/arch/arm/boot/dts/$(yourprojectname).dts里面导入我们定义出来的定义文件

#include "cust_mt6761_touch_1600x720.dtsi"(本项目是mt6761平台,1600x720分辨率)根据自己情况定义,与定义文件名保持一致即可

/* TOUCH start */ &i2c0 { clock-frequency = ; pinctrl-names = "default", "ts_int_active", "ts_reset_active", "ts_int_suspend", "ts_reset_suspend", "ts_i2c_mode", "ts_eint_high"; pinctrl-0 = ; pinctrl-1 = ; pinctrl-2 = ; pinctrl-3 = ; pinctrl-4 = ; pinctrl-5 = ; pinctrl-6 = ; }; &touch { tpd-resolution = ; lcm-resolution = ; tpd-cfg-version = "config17"; tpd-max-touch-num = ; use-tpd-button = ; tpd-key-num = ; tpd-key-local= ; tpd-key-dim-local = ; interrupt-parent = ; interrupts = ; goodix,eint-gpio = ; goodix,reset-gpio = ; vtouch-supply = ; /*jadard dt info*/ jadard,panel-sense-nums = ; jadard,panel-coords = ; jadard,panel-max-points = ; jadard,int-is-edge = ; gpios=,; jadard,irq-gpio = ; jadard,rst-gpio = ; /* Rotate cord when open blew lables */ /*goodix,x2x;*/ /*goodix,y2y;*/ tpd-filter-enable = ; tpd-filter-pixel-density = ; tpd-filter-custom-prameters = ; tpd-filter-custom-speed = ; status = "okay"; }; &pio { ctp_pins_default: eintdefault { }; ctp_ts_int_active: int_active { pins_cmd_dat { pinmux = ; input-enable; bias-pill-up = ; }; }; ctp_ts_reset_active: reset_active { pins_cmd_dat { pinmux = ; slew-rate = ; output-high; }; }; ctp_ts_int_suspend: int_suspend { pins_cmd_dat { pinmux = ; slew-rate = ; output-low; }; }; ctp_ts_reset_suspend: reset_suspend { pins_cmd_dat { pinmux = ; slew-rate = ; output-low; }; }; ctp_ts_i2c_mode: i2cmode_default { pins_cmd_dat { pinmux = , ; }; }; ctp_ts_int_as_gpio: int_high { pins_cmd_dat { pinmux = ; slew-rate = ; output-high; }; }; }; /* TOUCH end */

注意与自己项目原理图对应,改i2c通道,scl与sda,tp的eint引脚与reset引脚实际的gpio

2.修改dws,dws现在一般只有三条路径,都要保持一致

根据原理图,在scl,sda,tp_eint,tp_rst对应的gpio处修改

$(LINUX_KERNEL_VERSION)/drivers/misc/mediatek/dws/$(MTK_PLATFORM)/$(yourprojectname).dws

vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/$(yourprojectname)/dct/dct/codegen.dws

vendor/mediatek/proprietary/custom/$(yourprojectname)/kernel/dct/dct/codegen.dws

改dws,我推荐mtk自带的工具vendor/mediatek/proprietary/tools/dct/DrvGen.exe,不过需要在windows环境打开,修改goip与i2c与enit很方便

 

3.在user与userdebug的config文件创建驱动宏

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_debug_defconfig

$(LINUX_KERNEL_VERSION)/arch/arm/configs/$(yourprojectname)_defconfig CONFIG_INPUT_TOUCHSCREEN=y

CONFIG_TOUCHSCREEN_MTK_JDCHIPSET_XBD=y        //  y代表true      is not set 为false

4.在驱动外的makefile与Kconfig添加驱动的加载路径

kernel-4.19/drivers/input/touchscreen/Makefile

obj-$(CONFIG_TOUCHSCREEN_MTK_JDCHIPSET_XBD)     += jadard_xbd/   //后面这个是驱动名

这个宏与上面config文件里面宏匹配上了,如果为true,编译后面驱动,false不编译

kernel-4.19/drivers/input/touchscreen/Kconfig

config CONFIG_TOUCHSCREEN_MTK_JDCHIPSET_XBD     bool "MediaTek Touch Panel Driver"     help       Say Y here if you have MediaTek touch panel.       If unsure, say N.       To compile this dirver as a module, choose M here: the       module will be called.

或者简写为

config TOUCHSCREEN_MTK_JDCHIPSET_XBD     bool "jadard directory name"     default n

5.添加厂家给的驱动

$(LINUX_KERNEL_VERSION)/drivers/input/touchscreen/jadard_xbd(根据自己的驱动名)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3